package com.example.demo.controller;

import com.example.demo.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private DataSourceTransactionManager  transactionManager;
    //DataSourceTransactionManager 用来获取事务(开启事务),提交或回滚事务
    @Autowired
    private TransactionDefinition transactionDefinition;
    //TransactionDefinition,定义了事务的基本属性
    @Autowired
    private UserService userService;
    @RequestMapping("/registry")
    public boolean registry(String name,String password){
        //开启事务
        TransactionStatus transaction = transactionManager.getTransaction(transactionDefinition);


//        TransactionStatus 它代表一个事务的状态。通过这个接口，你可以查询事务的当前状态，比如是否还有未完成的操作，或者是否可以进行回滚。
//        transactionManager.getTransaction(transactionDefinition)
//        这行代码调用了DataSourceTransactionManager的getTransaction方法，传入了一个TransactionDefinition实例。
//        这个方法会根据传入的事务定义创建一个新的事务，并返回一个TransactionStatus对象，表示这个新创建的事务的状态。
//


        //回滚事务
//        transactionManager.rollback(transaction);;
        //提交事务(提交事务和 回滚事务只能二选一
        transactionManager.commit(transaction);
        Integer result = userService.registry(name,password);
        log.info("影响行数: "+result);
        return true;


    }


}
